# **moonclown**

## Запуск приложения локально:

Прежде чем запускать данное приложение у себя на ПК, убедитесь, что ваш компьютер обладает всем необходимым ПО, нужным для функционирования проекта (VS Code, Node.js, mongoDB).

После скачивания репозитория вам необходимо осуществить следующее:

1. Находясь в корне репозитория moonclown-backend, создать файл .env и заполнить его следующими переменными:

- PORT - данная переменная определяет, на каком порту будет запускаться серверная часть.
- WEBSITE_URL - в данную переменную следует записать адрес клиентской части в браузере (по умолчанию: http://localhost:5173/moonclown).
- SECRET_KEY - в данную переменную нужно записать случайный сгенерированный секретный ключ, который будет использоваться для авторизации.
- RESET_PASSWORD_KEY - в данную переменную нужно записать случайный сгенерированный секретный ключ, который будет использоваться для восстановления пароля.
- MONGODBADDRESS - данная переменная отвечает за адрес БД для серверной части (по умолчанию: 'mongodb://127.0.0.1/moonclown').
- MONGO_DUPLICATE_KEY_ERROR - код ошибки duplicate (по умолчанию 11000).
- MAIL_LOGIN - логин от почты, с которой пользователям будут отправляться сообщения на почту.
- MAIL_PASSWORD - пароль от почты, с которой пользователям будут отправляться сообщения на почту.
- MOONCLOWN_EMAIL - адрес почтового ящика, на который будут приходить сообщения, которые пользователь может отправлять с главной страницы.
- SALT_ROUNDS - количество итераций соли в хэше (рекомендуемое значение - 10).
- MOVIES_API_URL - адрес используемого API для поиска фильмов (в моем случае: 'https://api.kinopoisk.dev/v1.4').
- MOVIES_API_KEY - ключ от API для поиска фильмов.

2. Находясь в корне репозитория moonclown-backend, создать папку images и добавить туда фотографию на своё усмотрение с именем "default" и расширением ".png". Данная фотография будет использоваться в качестве начальной аватарки для всех пользователей.

3. Находясь в терминале репозитория moonclown-backend, выполнить следующие команды:

   ```
   yarn install
   ```

   ```
   yarn dev
   ```

   После выполнения данных команд серверная часит должна запуститься на порту, который вы указали в файле .env.

4. Находясь в терминале репозитория moonclown-frontend, выполнить следующие команды:

   ```
   yarn install
   ```

   ```
   yarn dev
   ```

   После выполнения данных команд клиентская часть должна быть доступна в браузере по адресу [http://localhost:5173](http://localhost:5173).

## Стек технологий:

### Язык программирования: TypeScript

### Пакетный менеджер: yarn

### Frontend

- Сборщик проекта: Vite
- SCSS
- React
- Redux Toolkit
- Axios

### Backend

- Платформа: Node.js
- Express
- MongoDB
- Mongoose
- Nodemailer

## Страницы сайта:

**1. Главная страница**.

- Доступна по роуту '/'.
- На данную страницу может зайти как авторизованный, так и неавторизованный пользователь.

**2. Страница с фильмами**.

- Доступна по роуту '/movies'.
- На данной странице можно искать фильмы среди тех, что приходят с API. Также можно переходить на ютуб-трейлер данного фильма, можно лайкать фильмы и таким образом сохранять их в базу данных.

**3. Страница с сохранёнными фильмами.**

- Доступна по роуту '/saved-movies'.
- На данной странице отображаются только те фильмы, которые вы лайкнули. По нажатию на крестик их можно удалить с данной страницы.

**4. Страница профиля.**

- Доступна по роуту '/profile'.
- На данной странице вы можете менять информацию и фотографию своего профиля, а также осуществить логаут.

**5. Страница регистрации.**

- Доступна по роуту '/signup'.
- На данной странице вы можете зарегистрироваться. При успешном подтверждении кода, пришедшего на почту, ваши данные сохранятся в базу, сразу же произойдёт логин и направление на страницу с фильмами.

**6. Страница логина.**

- Доступна по роуту '/signin'.
- На данной странице можно авторизоваться, если у вас уже есть аккаунт. При успешной авторизации вас направит на страницу с фильмами.

**7. Страница с ошибкой 404.**

- Доступна по любому роуту, который не предусмотрен в приложении.
- На данной странице пользователь может нажать кнопку "назад", которая вернёт его на главную страницу проекта, а также в данном компоненте находится загадочная свинка :3
